Security concerns for all types of processor-based electronic devices, and particularly for computing devices, have become significant. While some concerns may relate to detrimental actions which may be undertaken by defective code implemented by such devices, the greater concerns relate to the ramifications of various types of attacks made upon such devices through malicious code, including code conventionally known in the field by a number of names, such as “viruses”, “worms”, “Trojan horses”, “spyware”, “malware”, and others. Such malicious code can have effects ranging from relatively benign, such as displaying messages on a screen, or taking control of limited functions of a device; to highly destructive, such as taking complete control of a device, running processes, transmitting and/or deleting files, etc. Virtually any type of imaginable action on a processor-based device has been the subject of attacks by malicious code.
Many of these attacks are directed at computing devices, such as workstations, servers, desktop computers, notebook and handheld computers, and other similar devices. Many of these computing devices can run one or more application programs which a user may operate to perform a set of desired functions. However, such attacks are not limited to such computing devices. A broader group of various types of devices, such as cell phones; personal digital assistants (“PDAs”); music and video players; network routers, switches or bridges; and other devices utilizing a microprocessor, microcontroller, or a digital signal processor, to execute coded instructions have been the subjects of attacks by malicious code.
A number of methodologies have been used in an attempt to reduce or eliminate both attacks and influence of malicious or defective code. Generally, these methodologies include detection, prevention, and mitigation. Specifically, these methodologies range from attempts to scan, identify, isolate, and possibly delete malicious code before it is introduced to the system or before it does harm (such as is the objective of anti-virus software, and the like), to restricting or containing the actions which may be taken by processes affected by malicious or defective code. However, such restrictions typically are configured statically based on a set of rules set forth in a security profile. Such statically configured rules do not always represent the dynamic conditions of an operating environment at runtime.
Typically, when an application is launched, a security profile is compiled for the application based on entitlements of the application. The security profile is then used to establish an operating environment in which the application is running and restriction on resources used by the application is enforced based on the security profile. However, compiling such a security profile consumes some resources and it takes longer to complete. The resources such as memory required to maintain the security profiles for a large number of applications may be relatively large.